package com.kfm.base.file;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class Demo {

    public static void main(String[] args) {

        File file = new File("d:/temp");

        System.out.println(file);
        System.out.println(file.exists());
        // 存在 && 是文件
        System.out.println(file.isFile());
        // 存在 && 是目录
        System.out.println(file.isDirectory());

        // 是否是隐藏文件
        System.out.println(file.isHidden());

        /**
         * 绝对路径：从盘符开始的路径，如：D:\db.sql
         * 相对路径：相对于当前项目的路径，如：db.sql
         */
        System.out.println(file.isAbsolute()); // true


        System.out.println(file.getName()); // 路径最后一级
        System.out.println(file.getPath()); // file对象所表示的 路径
        System.out.println(file.getAbsolutePath()); // file 所表示的路径的位置

        System.out.println(file.lastModified()); // 最后一次修改时间 -- 时间戳
        System.out.println(new Date(file.lastModified()));

        System.out.println(file.length()); // 文件的大小 单位：字节


        String[] list = file.list(); // file 目录下文件名列表
        File[] files = file.listFiles(); // file 目录下所有文件对象
        for (File f : files){
            System.out.println(f);
        }


        File f = new File("a.txt");
        File f1 = new File("d://db.java");

        System.out.println(f.getPath());
        try {
            // 规范路径表示
            System.out.println(f1.getCanonicalPath());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        System.out.println(f1.canExecute());
        System.out.println(f1.canWrite());

        System.out.println("----------------------------");

        /**
         * File 表示文件或目录，路径。可能存在，可能不存在
         */
        File io = new File("d://io/ebook/剑来.txt");

        // io.getParentFile() == new File("d://io/ebook") 判断父目录是否存在
        if (!io.getParentFile().exists()){
            io.getParentFile().mkdirs(); // 创建父目录
        }

        // 判断文件是否存在
        if (!io.exists()) {
            try {
                io.createNewFile(); // 创建文件
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }

//        if (!io.exists()){
//            System.out.println("创建目录");
////            io.mkdir(); // 创建目录. 只能创建最后一级目录
//            io.mkdirs(); // 创建多级目录
//        }

        System.out.println(io.exists());

//        System.out.println(io.renameTo(new File("d:/io/《剑来-烽火戏诸侯1》.txt"))); // 重命名

//        File moive = new File("d:/temp/Windows 10 LTSC 2021 19044.2006 4in1 小修.esd");
//
//        long l = System.currentTimeMillis();
//
//        moive.renameTo(new File("e:/Windows 10 LTSC 2021 19044.2006 4in1 小修.esd"));
//
//        System.out.println(System.currentTimeMillis() - l);

//        File ebook = new File("d:/io/ebook");
//
//        System.out.println(ebook.renameTo(new File("d:/io/ebook1")));

//        File f2 = new File("d:/io/《剑来-烽火戏诸侯》.txt");
//
//        f2.delete();
//
//        File f3 = new File("d:/io/《剑来-烽火戏诸侯1》.txt");
//
//        f3.deleteOnExit();
//
//        System.out.println(f3.exists());

        System.out.println(io.getTotalSpace() / 1024 / 1024 / 1024 + "GB");
        System.out.println(io.getFreeSpace() / 1024 / 1024 / 1024);
        System.out.println(io.getUsableSpace() / 1024 / 1024 / 1024);

        File ebook = new File("d:/io/ebook");

        System.out.println(ebook.delete());

    }
}
